package cn.usbtg.common.idmanager;

import java.util.List;

/**
 * id生成器
 */
public interface IdGenerater {

    /**
     * 获取上一次生成的id
     *
     * @return 上一次生成的id
     */
    public String last();

    /**
     * 生成id
     *
     * @param params 运算参数
     * @return 生成的id
     */
    public String next(Object... params);

    /**
     * 生成id(使用指定处理逻辑覆盖id generater处理逻辑)
     *
     * @param afterGeneraterReview id生成后预览处理逻辑
     * @param params               运算参数
     * @return 生成的id
     */
    public String next(AfterGeneraterReview afterGeneraterReview, Object... params);

    /**
     * 添加格式化器
     *
     * @param formater 格式化器
     */
    public void addFormater(Formater formater);

    /**
     * 获取id生成器名称
     *
     * @return id生成器名称
     */
    public String getName();

    /**
     * 设置id生成器名称
     *
     * @param name id生成器名称
     */
    public void setName(String name);

    /**
     * 获取id生成器的格式化器
     *
     * @return id生成器的格式化器
     */
    public List<Formater> getFormaters();

    /**
     * 设置id生成器的格式化器
     *
     * @param formaters id生成器的格式化器
     */
    public void setFormaters(List<Formater> formaters);

    /**
     * 获取id生成后预览处理逻辑
     *
     * @return id生成后预览处理逻辑
     */
    public AfterGeneraterReview getAfterGeneraterReview();

    /**
     * 设置id生成后预览处理逻辑
     *
     * @param afterGeneraterReview id生成后预览处理逻辑
     */
    public void setAfterGeneraterReview(AfterGeneraterReview afterGeneraterReview);
}